1. Field of the Invention
The present invention relates to file systems, and more particularly to mapping file handles for file systems.
2. Related Art
Computer based information storage systems, such as databases and file systems have been widely utilized by users to access, store, modify and update persistent data. In a computer system, a file system defines the manner in which files are named and placed logically for storage and retrieval. Generally many file systems provide a hierarchical (tree) structure for managing files. A file is placed in a directory (or a folder or subdirectory) at the desired place in the tree structure.
A path is the route from a root directory of a file system to a particular file. A pathname (or path name) is the specification of that path. A file system also includes a format for specifying a path to a file through the structure of directories. Well known examples of file systems operable in a distributed computing environment include Windows NT file system (“NTFS”), Distributed File System (“DFS”), Network File System (“NFS”) and the Andrew file system (“AFS”).
File handles are used by various file system protocols operating in a distributed computing environment, e.g., NFS, as a way to identify objects stored in the file systems. In these protocols, a computer client (“client”) receives a file handle (“handle”) from a file server (“server”) when first accessing or opening an object. The client uses this handle in subsequent operations to access the object. In some file system protocols the handle is opaque to the client. Many protocols do not impose an internal structure on the handle. In some file system protocols the handle are persistent and survive file server crashes.
Referring to FIG. 1, a computer system 100 is illustrated. In system 100, an intermediary computer 110 is connected to multiple servers 150 and multiple clients 120. Numerous instances of server 150 and client 120 are shown. The intermediary computer 110 performs functions such as file caching. When a client 120 tries to access or open an object 130 stored in a file system 140 of server 150 for the first time using the intermediary computer 110, the client 120 generates a request 115. The intermediary computer 110 routes the request 115 to the appropriate server, e.g., server 150 as message 125. The server 150 then replies with a handle, e.g., server handle 160, which is used by the intermediary computer 110 to access the object 130 in subsequent operations. To complete the operation of accessing object 130, the intermediary computer 110 sends a reply to client 120 that includes a handle, e.g., client handle 170.
Referring to FIG. 2, the client 120 uses the client handle 170 to make subsequent access calls to the object 130. The intermediary computer 110 thus needs to map a server handle to a client handle. For example, upon receiving the client handle 170, the intermediary computer 110 forwards the request to the appropriate server identified by the server handle 160 corresponding to the client handle 170.
If a file system protocol supports handles of variable length, then a simple solution to generate the client file handle 170 from the server file handle 160 would concatenate a unique identifier of the server and the server handle. However, if the file system protocol only supports handles of fixed or limited length, then this simple solution may not be applicable. In this case, another simple solution to the mapping problem would allocate a new client handle to each new server-server handle combination, and create a database that stores the mapping. But this requires a database entry for each file system object, and thus may require such a large database as to prevent effective caching, or degrade performance. Additionally, such a large database requires a large amount of memory and/or disk space. Therefore, a need exists to improve mapping of file handles.